package Offer;

/**
 * 把字符串转换成整数
 * 最主要考虑边界问题
 * @author 是阿秋啊
 * @date 2022/08/16 21:02
 **/
public class Num67 {
    public static int strToInt(String str) {
        str = str.trim();
        int i = 0;
        int len = str.length();
        if(len == 0) {
            return 0;
        }
        if(str.charAt(i) != '+' && str.charAt(i) != '-' && (str.charAt(i) < '0' || str.charAt(i) > '9')) {
            return 0;
        }
        int ret = 1;
        if(str.charAt(i) == '-') {
            i++;
            ret=-1;
        }else if(str.charAt(i) == '+' ){
            i++;
        }
        int res = 0;
        int bndry = Integer.MAX_VALUE / 10;
        while(i < len && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
            if(res > bndry || (res == bndry && str.charAt(i) > '7')) {
                return ret == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            res = res * 10 + (str.charAt(i) - '0');
            i++;
        }
        return ret * res;
    }
}